home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / XML Utilities / Professional Programmer XSL IDE / Xselerator25.msi / Data.Cab / F38838_transformandsum.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-01-20  |  1.4 KB  |  42 lines

  1. <xsl:stylesheet version="1.0"
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:saxon="http://icl.com/saxon"
  4. xmlns:sum-fold-func="f:sum-fold-func"
  5. exclude-result-prefixes="xsl saxon sum-fold-func"
  6. >
  7.    <xsl:import href="foldl.xsl"/>
  8.  
  9.    <sum-fold-func:sum-fold-func/>
  10.  
  11.     <xsl:template name="transform-and-sum">
  12.       <xsl:param name="pFuncTransform" select="/.."/>
  13.       <xsl:param name="pList" select="/.."/>
  14.  
  15.       <xsl:variable name="vrtfFoldFun">
  16.         <sum-fold-func:sum-fold-func/>
  17.         <xsl:copy-of select="$pFuncTransform"/>
  18.       </xsl:variable>
  19.       
  20.       <xsl:call-template name="foldl">
  21.         <xsl:with-param name="pFunc" select="saxon:node-set($vrtfFoldFun)/*"/>
  22.         <xsl:with-param name="pList" select="$pList"/>
  23.         <xsl:with-param name="pA0" select="0"/>
  24.       </xsl:call-template>
  25.     </xsl:template>
  26.  
  27.     <xsl:template name="add" match="sum-fold-func:*">
  28.          <xsl:param name="arg0" select="/.."/>
  29.          <xsl:param name="arg1" select="0"/>
  30.          <xsl:param name="arg2" select="0"/>
  31.          
  32.          <xsl:variable name="vPartialCompose">
  33.            <xsl:apply-templates select="$arg0">
  34.              <xsl:with-param name="arg" select="$arg2"/>
  35.            </xsl:apply-templates>
  36.          </xsl:variable>
  37.          
  38.          <xsl:value-of select="$arg1 + $vPartialCompose"/>
  39.     </xsl:template>
  40.  
  41.  
  42. </xsl:stylesheet>